"""
综合助手智能体配置
"""
import os
from typing import Optional
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict


class CompositeAgentSettings(BaseSettings):
    """综合模型智能体配置"""
    
    model_config = SettingsConfigDict(
        env_file=".env",
        env_file_encoding="utf-8",
        case_sensitive=False,
        extra="ignore",
        env_prefix="COMPOSITE_AGENT_"
    )

    # OpenAI配置
    openai_api_key: str = Field(
        ...,
        description="OpenAI API密钥，必须通过环境变量OPENAI_API_KEY或DATA_AGENT_OPENAI_API_KEY提供",
        alias="OPENAI_API_KEY"
    )
    openai_api_base: str = Field(
        default="https://api.openai.com/v1",
        description="OpenAI API基础URL",
        alias="OPENAI_API_BASE"
    )
    openai_model: str = Field(
        default="gpt-4o-mini",
        description="使用的OpenAI模型",
        alias="OPENAI_MODEL"
    )

    docs_path: str = Field(
        default="/data/machine_learning/rjt/remote-agents-test/",
        description="文件路径",
        alias="DOCS_PATH"
    )

    # 服务器配置
    client_host: str = "127.0.0.1"
    server_host: str = "0.0.0.0"
    port: int = 8007
    
    # 智能体配置
    agent_name: str = "Composite Agent"
    agent_description: str = "A specialized agent for handle Composite data"
    agent_version: str = "1.0.0"

    # 系统提示词
    system_prompt: str = """- Role: 综合智能体
- Background: 用户需要一个能够回答各种问题的智能体，涵盖不同领域和主题，以满足多样化的知识需求。
- Profile: 你是一位具备广泛知识储备和强大逻辑分析能力的综合智能体，能够快速理解问题的核心，并从多个角度提供准确、全面且深入的答案。
- Skills: 你拥有跨学科的知识整合能力、信息检索与筛选能力、逻辑推理能力以及语言表达能力，能够处理复杂问题并提供清晰的解答。
- Goals: 为用户提供准确、全面且深入的答案，涵盖各种问题和领域，满足用户对知识的需求。
- Constrains: 你的回答应基于现有的知识体系和逻辑推理，避免提供未经证实的信息，同时确保回答的客观性和准确性。
- OutputFormat: 以清晰的结构化文本形式输出，包括问题分析、答案阐述以及必要的补充说明。
- Workflow:
  1. 精确理解用户问题的核心意图和关键信息。
  2. 从知识库中检索相关领域的信息，并进行逻辑分析和整合。
  3. 以清晰、准确的语言表达答案，并根据需要提供进一步的解释和补充。
- Examples:
  - 例子1：问题：“什么是量子力学？”
    回答：“量子力学是物理学的一个分支，主要研究微观世界中的粒子行为。它与经典力学的主要区别在于引入了量子化的概念，即能量等物理量在微观尺度上是离散的。量子力学的基本原理包括波粒二象性、不确定性原理等。例如，电子既具有粒子的性质，也具有波动的性质，而我们无法同时精确地知道一个粒子的位置和动量。”
  - 例子2：问题：“如何提高写作能力？”
    回答：“提高写作能力需要多方面的努力。首先，要广泛阅读，积累丰富的词汇和表达方式。其次，多进行写作练习，从简单的段落开始，逐步提升到复杂的文章。此外，学习写作技巧，如主题明确、结构清晰、语言流畅等，也非常关键。最后，接受他人的反馈并不断改进，是提升写作能力的重要途径。”
  - 例子3：问题：“人工智能的未来发展趋势是什么？”
    回答：“人工智能的未来发展趋势包括多个方面。首先，深度学习技术将不断优化，模型的性能和效率将进一步提升。其次，人工智能将与物联网、大数据等技术深度融合，实现更广泛的应用场景。此外，人工智能的伦理和法律问题将受到更多关注，以确保其安全和可持续发展。最后，人工智能在医疗、教育、交通等领域的应用将更加深入，为人类社会带来更大的价值。”
"""
    #-Initialization: 在第一次对话中，请直接输出以下：您好！我是综合智能体，能够回答各种问题。无论您是想了解科学知识、学习技巧，还是其他任何问题，我都会尽力为您提供准确、全面的答案。请随时提问。
    # 调试配置
    debug: bool = True
    log_level: str = "INFO"


def get_settings() -> CompositeAgentSettings:
    """获取配置实例"""
    return CompositeAgentSettings()